/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.withdraw.entity;

import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

import com.thinkgem.jeesite.common.persistence.DataEntity;

/**
 * 提现管理Entity
 * @author aa
 * @version 2017-08-08
 */
public class PayCashWithdraw extends DataEntity<PayCashWithdraw> {

	private static final long serialVersionUID = 1L;
	private String orderId;		// 商户订单号
	private String tradeNo;		// 三方支付流水号
	private String batchId;		// 三方支付批次号
	private Integer terminalType;		// 交易渠道 0:WEB 1:ANDROID 2:WECHAT 3:IOS 4:OMS 5:OTHER
	private String amount;		// 交易金额
	private String payFee;		// 三方手续费
	private String userFee;		// 用户手续费
	private Integer userId;		// 交易用户id
	private Integer checkUesrId;		// 审核人
	private Integer payUserId;		// 出款人
	private Date sendTime;		// 三方请求时间
	private Date replyTime;		// 三方应答时间
	private Integer status;		// 交易状态：0:未处理 1:成功 2:等待回调 3:失败 4:异常情况
	private Integer checkStatus;		// 审核状态（0：未审核 1：审核通过 2：审核失败）
	private String remark;		// 备注
	private String cardNo;		// 提现账户号
	private Date settleTime;		// 清算日期
	private Integer productId;		// 认购产品ID
	private Integer payType;		// 支付方式: 1 快捷支付 2 网银网关支付
	private Integer applyDate;		// 申请日期
	private Date applyTime;		// 申请时间
	private Integer checkDate;		// 审核日期
	private Date checkTime;		// 审核时间
	private Integer settleDate;		// 结算日期例子  20170706  索引查询
	private String msg;		// 第三方返回信息
	private String retCode;		// 第三方返回码
	private String callbackMsg;		// 第三方回调记录

	public PayCashWithdraw() {
		super();
	}

	public PayCashWithdraw(String id){
		super(id);
	}

	@Length(min=1, max=24, message="商户订单号长度必须介于 1 和 24 之间")
	public String getOrderId() {
		return orderId;
	}

	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	@Length(min=0, max=30, message="三方支付流水号长度必须介于 0 和 30 之间")
	public String getTradeNo() {
		return tradeNo;
	}

	public void setTradeNo(String tradeNo) {
		this.tradeNo = tradeNo;
	}

	@Length(min=0, max=30, message="三方支付批次号长度必须介于 0 和 30 之间")
	public String getBatchId() {
		return batchId;
	}

	public void setBatchId(String batchId) {
		this.batchId = batchId;
	}

	@NotNull(message="交易渠道 0:WEB 1:ANDROID 2:WECHAT 3:IOS 4:OMS 5:OTHER不能为空")
	public Integer getTerminalType() {
		return terminalType;
	}

	public void setTerminalType(Integer terminalType) {
		this.terminalType = terminalType;
	}

	public String getAmount() {
		return amount;
	}

	public void setAmount(String amount) {
		this.amount = amount;
	}

	public String getPayFee() {
		return payFee;
	}

	public void setPayFee(String payFee) {
		this.payFee = payFee;
	}

	public String getUserFee() {
		return userFee;
	}

	public void setUserFee(String userFee) {
		this.userFee = userFee;
	}

	@NotNull(message="交易用户id不能为空")
	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public Integer getCheckUesrId() {
		return checkUesrId;
	}

	public void setCheckUesrId(Integer checkUesrId) {
		this.checkUesrId = checkUesrId;
	}

	public Integer getPayUserId() {
		return payUserId;
	}

	public void setPayUserId(Integer payUserId) {
		this.payUserId = payUserId;
	}

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getSendTime() {
		return sendTime;
	}

	public void setSendTime(Date sendTime) {
		this.sendTime = sendTime;
	}

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getReplyTime() {
		return replyTime;
	}

	public void setReplyTime(Date replyTime) {
		this.replyTime = replyTime;
	}

	@NotNull(message="交易状态：0:未处理 1:成功 2:等待回调 3:失败 4:异常情况不能为空")
	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}

	@NotNull(message="审核状态（0：未审核 1：审核通过 2：审核失败）不能为空")
	public Integer getCheckStatus() {
		return checkStatus;
	}

	public void setCheckStatus(Integer checkStatus) {
		this.checkStatus = checkStatus;
	}

	@Length(min=0, max=128, message="备注长度必须介于 0 和 128 之间")
	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	@Length(min=0, max=20, message="提现账户号长度必须介于 0 和 20 之间")
	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getSettleTime() {
		return settleTime;
	}

	public void setSettleTime(Date settleTime) {
		this.settleTime = settleTime;
	}

	@NotNull(message="认购产品ID不能为空")
	public Integer getProductId() {
		return productId;
	}

	public void setProductId(Integer productId) {
		this.productId = productId;
	}

	public Integer getPayType() {
		return payType;
	}

	public void setPayType(Integer payType) {
		this.payType = payType;
	}

	@NotNull(message="申请日期不能为空")
	public Integer getApplyDate() {
		return applyDate;
	}

	public void setApplyDate(Integer applyDate) {
		this.applyDate = applyDate;
	}

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@NotNull(message="申请时间不能为空")
	public Date getApplyTime() {
		return applyTime;
	}

	public void setApplyTime(Date applyTime) {
		this.applyTime = applyTime;
	}

	public Integer getCheckDate() {
		return checkDate;
	}

	public void setCheckDate(Integer checkDate) {
		this.checkDate = checkDate;
	}

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getCheckTime() {
		return checkTime;
	}

	public void setCheckTime(Date checkTime) {
		this.checkTime = checkTime;
	}

	public Integer getSettleDate() {
		return settleDate;
	}

	public void setSettleDate(Integer settleDate) {
		this.settleDate = settleDate;
	}

	@Length(min=0, max=200, message="第三方返回信息长度必须介于 0 和 200 之间")
	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	@Length(min=0, max=20, message="第三方返回码长度必须介于 0 和 20 之间")
	public String getRetCode() {
		return retCode;
	}

	public void setRetCode(String retCode) {
		this.retCode = retCode;
	}

	@Length(min=0, max=1024, message="第三方回调记录长度必须介于 0 和 1024 之间")
	public String getCallbackMsg() {
		return callbackMsg;
	}

	public void setCallbackMsg(String callbackMsg) {
		this.callbackMsg = callbackMsg;
	}

}